/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package compevol;

/**
 *
 * @author vureus
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        //configuracoes:
        Configuracao config = new Configuracao();
        config.crossover = new CrossoverUmPonto();
        //config.crossover = new CrossOverMultiPonto();
        config.selecao =  new SelecaoTorneio();
        //config.selecao =  new SelecaoRoleta();
        config.maxIteracoes = 100;
        config.probabilidadeCruzamento = 0.9;
        config.probabilidadeMutacao = 0.05;
        config.populacaoInicial = 100;
        config.pararSeErroSolucaoMenorQue = 0;

        //* <-- adicionar/remover uma barra para alternar entre funcoes. Fazer uma interface depois (por argumento na hr de executar, ou GUI)

         config.funcao = new Funcao2();
        config.minValue = -5.12; //para cromossomos, ou dominio da funcao
        config.maxValue = 5.12;
        config.numValores = 3; //valores de x1, x2, x3... para a funcao
        /*/
          config.funcao = new Funcao4();
        config.minValue = -100; //para cromossomos, ou dominio da funcao
        config.maxValue = 100;
        config.numValores = 10; //valores de x1, x2, x3... para a funcao
        /**/


        //instancia gerenciador de populacao com as configurações
        Populacao geracao = new Populacao(config);
        geracao.geraPopInicial();

        //itera ateh que tenha criterio de parada
        while (!geracao.criterioDeParada()) {
            geracao.novaGeracao();
            System.out.println( geracao.melhorIndividuo());
        }

        System.out.println("---- Fim -----");
        System.out.println("Melhor individuo:");
        Individuo melhor =  geracao.melhorIndividuo();
        System.out.println( melhor );
        System.out.println( "valores de Xi:" );
        
        for(double a : melhor.valores() ){
            System.out.println(a );

        }

//ScatterRenderer renderer = new ScatterRenderer();

        //System.out.println("cabou");
    }
}
